perm filename FORMAT[S,WD] blob
sn#012122 filedate 1972-11-11 generic text, type T, neo UTF8
00100 (DECLARE (SPECIAL LINCNT PAGEHEIGHT PAGEWIDTH)
00200 (SPECIAL *SP *TB *CR *LF *VT *FF *CO *PT)
00300 (SPECIAL *LP *RP *SL *AM *RO *AT *LB *RB)
00400 (DEFPROP DATAERR T *FSUBR))
00500
00600 (COMMENT FORMAT PROGRAM MACROS)
00700
00800 (DEFPROP ATLEFT (LAMBDA (L) (LIST (Q EQ) 1 (Q (CURCOL)))) MACRO)
00900
01000 (DEFPROP COLUMN (LAMBDA (L) (CONS (Q CAR) (CDR L))) MACRO)
01100
01200 (DEFPROP DFUNC
01300 (LAMBDA (L)
01400 (LIST (Q DEFPROP)
01500 (CAADR L)
01600 (MCONS (Q LAMBDA) (CDADR L) (CDDR L))
01700 (Q EXPR)))
01800 MACRO)
01900
02000 (DEFPROP HEIGHT (LAMBDA (L) (CONS (Q CADR) (CDR L))) MACRO)
02100
02200 (DEFPROP MAPDEF
02300 (LAMBDA (L)
02400 (LIST (Q MAPCAR)
02500 (SUBST (CADR L)
02600 (Q IND)
02700 (Q (FUNCTION (LAMBDA (PAIR)
02800 (PUTPROP (CAR PAIR)
02900 (CADR PAIR)
03000 (QUOTE IND))))))
03100 (LIST (Q QUOTE) (CDDR L))))
03200 MACRO)
03300
03400 (DEFPROP MCONS
03500 (LAMBDA (L)
03600 (COND ((NULL (CDDR L)) (CADR L))
03700 (T (LIST (Q CONS) (CADR L) (CONS (CAR L) (CDDR L))))))
03800 MACRO)
03900
04000 (DEFPROP NEWBUF (LAMBDA (L) (LIST (Q LIST) 0 1 0)) MACRO)
04100
04200 (DEFPROP Q (LAMBDA (L) (CONS (QUOTE QUOTE) (CDR L))) MACRO)
04300
04400 (DEFPROP STRING (LAMBDA (L) (CONS (Q CDDDR) (CDR L))) MACRO)
04500
04600 (DEFPROP WIDTH (LAMBDA (L) (CONS (Q CADDR) (CDR L))) MACRO)
04700
04800 (COMMENT END OF FORMAT PROGRAM MACROS)
04900
05000 (COMMENT PROPERTY TABLE PRIMITIVES)
05100
00100 (DEFPROP FIRSTPROP (LAMBDA (L) (CONS (Q CDR) (CDR L))) MACRO)
00200
00300 (DEFPROP LASTPROP (LAMBDA (L) (CONS (Q NULL) (CDR L))) MACRO)
00400
00500 (DEFPROP NEXTPROP (LAMBDA (L) (CONS (Q CDDR) (CDR L))) MACRO)
00600
00700 (DEFPROP PROPNAM (LAMBDA (L) (CONS (Q CAR) (CDR L))) MACRO)
00800
00900 (DEFPROP PROPTABLE (LAMBDA (L) (CONS (Q CDR) (CDR L))) MACRO)
01000
01100 (DEFPROP PROPVAL (LAMBDA (L) (CONS (Q CADR) (CDR L))) MACRO)
01200
01300 (DFUNC (DELETEPROP IDENT PROPNAM)
01400 (PROG (TEM)
01500 (SETQ TEM IDENT)
01600 LOOP (COND ((NULL (CDR TEM)) (RETURN NIL)))
01700 (COND ((EQ (CADR TEM) PROPNAM) (RPLACD TEM (CDDDR TEM))
01800 (RETURN T)))
01900 (SETQ TEM (CDDR TEM))
02000 (GO LOOP)))
02100
02200 (DFUNC (GETGET ATOM PROP)
02300 (PROG (TEM PTAB)
02400 (SETQ PTAB (FIRSTPROP ATOM))
02500 LOOP (COND ((LASTPROP PTAB) (RETURN NIL)))
02600 (COND ((SETQ TEM (SEEKPROP (PROPNAM PTAB) PROP))
02700 (RETURN TEM)))
02800 (SETQ PTAB (NEXTPROP PTAB))
02900 (GO LOOP)))
03000
03100 (DFUNC (INITPROP IDENT PROPNAM PROPVAL)
03200 (RPLACD IDENT (MCONS PROPNAM PROPVAL (CDR IDENT))))
03300
03400 (DFUNC (SEEKPROP IDENT PROP) (GETL IDENT (LIST PROP)))
03500
03600 (DFUNC (SETPROP IDENT PROPNAM PROPVAL)
03700 (PUTPROP IDENT PROPVAL PROPNAM))
03800
03900 (COMMENT END OF PROPERTY TABLE PRIMITIVES)
04000
00100 (DFUNC (BUFASSIGN EXPR WIDTH RPARS SLACK)
00200 (PROG (COMS MARG REST)
00300 (SETQ COMS (NEWBUF))
00400 (MKLPR COMS)
00500 (MKEXPR COMS (CAR EXPR))
00600 (MKSPC COMS)
00700 (MKEXPR COMS (CADR EXPR))
00800 (SETQ MARG (ADD1 (COLUMN COMS)))
00900 (SETQ REST (BUFLIST (CDDR EXPR)
01000 (*DIF WIDTH MARG)
01100 (ADD1 RPARS)
01200 (PLUS SLACK (SUB1 MARG))))
01300 (COND ((NOT (*GREAT (FULLWTH REST (ADD1 RPARS))
01400 (*DIF WIDTH MARG)))
01500 (RETURN (MKRPR (MKLIST COMS MARG REST)))))
01600 (SETQ MARG (*DIF MARG (ADD1 (FLATSIZE (CADR EXPR)))))
01700 (SETQ REST (BUFLIST (CDDR EXPR)
01800 (*DIF WIDTH MARG)
01900 (ADD1 RPARS)
02000 (PLUS SLACK (SUB1 MARG))))
02100 (COND ((NOT (*GREAT (FULLWTH REST (ADD1 RPARS))
02200 (*DIF WIDTH MARG)))
02300 (RETURN (MKRPR (MKLIST COMS MARG REST)))))
02400 (RETURN (MKRPR (MKLIST COMS
02500 1
02600 (BUFLIST (CDDR EXPR)
02700 (SUB1 WIDTH)
02800 (ADD1 RPARS)
02900 SLACK))))))
03000
03100 (DFUNC (BUFATOMS ATOMS WIDTH RPARS SLACK)
03200 (PROG (COMS WTH)
03300 (SETQ COMS (NEWBUF))
03400 (COND ((NOT (NULL ATOMS)) (MKEXPR COMS (CAR ATOMS))
03500 (SETQ ATOMS (CDR ATOMS))))
03600 LOOP (COND ((NULL ATOMS) (RETURN COMS)))
03700 (SETQ WTH (PLUS (COLUMN COMS) 1 (FLATSIZE (CAR ATOMS))))
03800 (COND ((NULL (CDR ATOMS)) (SETQ WTH (ADD1 WTH))))
03900 (COND ((GREATERP WTH WIDTH) (MKTAB COMS 0)) (T (MKSPC COMS)))
04000 (MKEXPR COMS (CAR ATOMS))
04100 (SETQ ATOMS (CDR ATOMS))
04200 (GO LOOP)))
04300
00100 (DFUNC (BUFDEFS EXPR WIDTH RPARS SLACK)
00200 (PROG (COMS MARG REST)
00300 (SETQ COMS (NEWBUF))
00400 (MKLPR COMS)
00500 (MKEXPR COMS (CAR EXPR))
00600 (MKSPC COMS)
00700 (MKEXPR COMS (CADR EXPR))
00800 (SETQ MARG (PLUS (FLATSIZE (CAR EXPR)) 2))
00900 (SETQ REST (BUFLIST (CDDR EXPR)
01000 (SUB1 WIDTH)
01100 (ADD1 RPARS)
01200 SLACK))
01300 (COND ((GREATERP (FULLWTH REST (ADD1 RPARS))
01400 (*DIF WIDTH MARG))
01500 (SETQ MARG 1)))
01600 (RETURN (MKRPR (MKLIST COMS MARG REST)))))
01700
01800 (DFUNC (BUFDEDFDM EXPR WIDTH RPARS SLACK)
01900 (PROG (COMS MARG MARG1 REST)
02000 (SETQ COMS (NEWBUF))
02100 (MKLPR COMS)
02200 (MKEXPR COMS (CAR EXPR))
02300 (MKSPC COMS)
02400 (MKEXPR COMS (CADR EXPR))
02500 (MKSPC COMS)
02600 (MKEXPR COMS (CADDR EXPR))
02700 (SETQ MARG1 (PLUS (FLATSIZE (CAR EXPR)) 2))
02800 (SETQ MARG (PLUS MARG1 (FLATSIZE (CADR EXPR)) 1))
02900 (SETQ REST (BUFLIST (CDDDR EXPR)
03000 (SUB1 WIDTH)
03100 (ADD1 RPARS)
03200 SLACK))
03300 (COND ((*GREAT (FULLWTH REST (ADD1 RPARS)) (*DIF WIDTH MARG))
03400 (SETQ MARG MARG1)))
03500 (COND ((*GREAT (FULLWTH REST (ADD1 RPARS)) (*DIF WIDTH MARG))
03600 (SETQ MARG 1)))
03700 (RETURN (MKRPR (MKLIST COMS MARG REST)))))
03800
00100 (DFUNC (BUFEXPR EXPR WIDTH RPARS SLACK)
00200 (PROG (COMS FIRST MARG REST TEM)
00300 (COND ((ATOM EXPR) (RETURN (MKEXPR (NEWBUF) EXPR))))
00400 (COND ((AND (ATOM (CAR EXPR))
00500 (NOT (NUMBERP (CAR EXPR)))
00600 (SETQ TEM (GETGET (CAR EXPR) (Q BUFFPRIN))))
00700 (RETURN ((PROPVAL TEM) EXPR WIDTH RPARS SLACK))))
00800 (SETQ COMS (MKEXPR (NEWBUF) EXPR))
00900 (COND ((NOT (GREATERP (PLUS (COLUMN COMS) RPARS) WIDTH))
01000 (RETURN COMS)))
01100 (SETQ COMS (MKLPR (NEWBUF)))
01200 (COND ((ATOM (CDR EXPR))
01300 (RETURN (MKRPR (MKLIST COMS
01400 1
01500 (BUFLIST EXPR
01600 (SUB1 WIDTH)
01700 (ADD1 RPARS)
01800 SLACK))))))
01900 (SETQ FIRST (BUFEXPR (CAR EXPR) (SUB1 WIDTH) 0 SLACK))
02000 (SETQ MARG (PLUS (COLUMN FIRST) 2))
02100 (COND ((ATOM (CAR EXPR)) (GO ATOM)))
02200 (SETQ REST (BUFLIST (CDR EXPR)
02300 (SUB1 WIDTH)
02400 (ADD1 RPARS)
02500 SLACK))
02600 (COND ((OR (GREATERP (HEIGHT FIRST) 1)
02700 (LESSP (*DIF WIDTH MARG)
02800 (FULLWTH REST (ADD1 RPARS))))
02900 (RETURN (MKRPR (MKLIST COMS 1 (MKAPP FIRST REST))))))
03000 (RETURN (MKRPR (MKLIST (MKEXPR COMS (CAR EXPR)) MARG REST)))
03100 ATOM (SETQ REST (BUFLIST (CDR EXPR)
03200 (*DIF WIDTH MARG)
03300 (ADD1 RPARS)
03400 (PLUS SLACK (SUB1 MARG))))
03500 (COND ((LESSP (PLUS SLACK (*DIF WIDTH MARG))
03600 (FULLWTH REST (ADD1 RPARS)))
03700 (RETURN (MKRPR (MKLIST (MKEXPR COMS (CAR EXPR))
03800 1
03900 (BUFLIST (CDR EXPR)
04000 (SUB1 WIDTH)
04100 (ADD1 RPARS)
04200 SLACK))))))
04300 (RETURN (MKRPR (MKLIST (MKEXPR COMS (CAR EXPR)) MARG REST)))))
04400
00100 (DFUNC (BUFLIST LIST WIDTH RPARS SLACK)
00200 (PROG (COMS)
00300 (SETQ COMS (NEWBUF))
00400 LOOP (MKAPP COMS
00500 (BUFEXPR (CAR LIST)
00600 WIDTH
00700 (COND ((NULL (CDR LIST)) RPARS)
00800 ((ATOM (CDR LIST))
00900 (PLUS RPARS (FLATSIZE (CDR LIST)) 3))
01000 (T 0))
01100 SLACK))
01200 (SETQ LIST (CDR LIST))
01300 (COND ((NULL LIST) (RETURN COMS)))
01400 (COND ((ATOM LIST) (RETURN (MKATOM COMS LIST))))
01500 (GO LOOP)))
01600
01700 (DFUNC (BUFMAPDEF EXPR WIDTH RPARS SLACK)
01800 (PROG (ATMS COMS MARG)
01900 (SETQ COMS (NEWBUF))
02000 (MKLPR COMS)
02100 (MKEXPR COMS (CAR EXPR))
02200 (MKSPC COMS)
02300 (MKEXPR COMS (CADR EXPR))
02400 (MKSPC COMS)
02500 (SETQ MARG (COLUMN COMS))
02600 (SETQ ATMS (BUFATOMS (CDDR EXPR)
02700 (*DIF WIDTH MARG)
02800 (ADD1 RPARS)
02900 SLACK))
03000 (RETURN (MKRPR (MKLIST COMS MARG ATMS)))))
03100
00100 (DFUNC (BUFPROG EXPR WIDTH RPARS SLACK)
00200 (PROG (COMS INDENT PVARS STATS)
00300 (SETQ COMS (NEWBUF))
00400 (MKLPR COMS)
00500 (MKEXPR COMS (CAR EXPR))
00600 (MKSPC COMS)
00700 (SETQ INDENT (PLUS (FLATSIZE (CAR EXPR)) 2))
00800 (SETQ PVARS (BUFPVARS (CADR EXPR)
00900 (*DIF WIDTH INDENT)
01000 (COND ((NULL (CDDR EXPR)) (ADD1 RPARS))
01100 (T 0))
01200 SLACK))
01300 (MKLIST COMS INDENT PVARS)
01400 (SETQ STATS (CDDR EXPR))
01500 LOOP (COND ((NULL STATS) (RETURN (MKRPR COMS))))
01600 (COND ((ATOM (CAR STATS)) (MKEXPR (MKTAB COMS 1) (CAR STATS)))
01700 (T (MKLIST COMS
01800 INDENT
01900 (BUFEXPR (CAR STATS)
02000 (*DIF WIDTH INDENT)
02100 (COND ((NULL (CDR STATS))
02200 (ADD1 RPARS))
02300 (T 0))
02400 SLACK))))
02500 (SETQ STATS (CDR STATS))
02600 (GO LOOP)))
02700
02800 (DFUNC (BUFPVARS VARS WIDTH RPARS SLACK)
02900 (PROG (ATMS COMS)
03000 (SETQ COMS (NEWBUF))
03100 (COND ((OR (ATOM VARS)
03200 (NOT (GREATERP (FLATSIZE VARS)
03300 (*DIF WIDTH RPARS))))
03400 (RETURN (MKEXPR COMS VARS))))
03500 (SETQ ATMS (BUFATOMS VARS (SUB1 WIDTH) (ADD1 RPARS) SLACK))
03600 (RETURN (MKRPR (MKLIST (MKLPR COMS) 1 ATMS)))))
03700
03800 (DFUNC (BUFSPECIAL EXPR WIDTH RPARS SLACK)
03900 (PROG (ATMS COMS INDENT)
04000 (SETQ COMS (NEWBUF))
04100 (SETQ INDENT (PLUS (FLATSIZE (CAR EXPR)) 2))
04200 (MKLPR COMS)
04300 (MKEXPR COMS (CAR EXPR))
04400 (MKSPC COMS)
04500 (SETQ ATMS (BUFATOMS (CDR EXPR)
04600 (*DIF WIDTH INDENT)
04700 (ADD1 RPARS)
04800 SLACK))
04900 (RETURN (MKRPR (MKLIST COMS INDENT ATMS)))))
05000
05100 (DFUNC (CURCOL) (*DIF (ADD1 (LINELENGTH NIL)) (CHRCT)))
05200
00100 (DEFPROP DATAERR
00200 (LAMBDA (L) (PROG NIL (INC NIL T) (OUTC NIL T) (PRINT L)))
00300 FEXPR)
00400
00500 (DFUNC (DOEXCEPT EXPR WIDTH RPARS SLACK)
00600 ((GET (CAR EXPR) (Q EXCEPTBUFF)) EXPR WIDTH RPARS SLACK))
00700
00800 (DFUNC (DOSPEC EXPR WIDTH RPARS SLACK)
00900 (PROG (COMS)
01000 (SETQ COMS (MKEXPR (NEWBUF) EXPR))
01100 (COND ((NOT (GREATERP (PLUS (COLUMN COMS) RPARS) WIDTH))
01200 (RETURN COMS)))
01300 (RETURN ((GET (CAR EXPR) (Q SPECBUFF)) EXPR
01400 WIDTH
01500 RPARS
01600 SLACK))))
01700
01800 (DFUNC (DOFILE DOREADS INFILE OUTFILE)
01900 (PROG (LINCNT)
02000 (SETQ LINCNT 0)
02100 (EVAL (MCONS (Q INPUT) (Q INCHAN) INFILE))
02200 (EVAL (MCONS (Q OUTPUT) (Q OUTCHAN) OUTFILE))
02300 (INC (Q INCHAN) NIL)
02400 (OUTC (Q OUTCHAN) NIL)
02500 (DOREADS)
02600 (OUTC NIL T)
02700 (INC NIL T)))
02800
02900 (DEFPROP FORMAT
03000 (LAMBDA (L)
03100 (PROG (DEV)
03200 (SETQ DEV (Q DSK:))
03300 LOOP (COND ((NULL L) (RETURN NIL)))
03400 (COND ((%DEVP (CAR L)) (SETQ DEV (CAR L)) (SETQ L (CDR L))))
03500 (FORMFILE (LIST DEV (CAR L))
03600 (LIST (Q DSK:)
03700 (CONS (COND ((ATOM (CAR L)) (CAR L))
03800 (T (CAAR L)))
03900 (Q FMT))))
04000 (SETQ L (CDR L))
04100 (GO LOOP)))
04200 FEXPR)
04300
00100 (DFUNC (FORMFILE INFILE OUTFILE)
00200 (PROG (LINCNT)
00300 (INC (EVAL (MCONS (Q INPUT) (GENSYM) INFILE)))
00400 (OUTC (EVAL (MCONS (Q OUTPUT) (GENSYM) OUTFILE)))
00500 (LINELENGTH PAGEWIDTH)
00600 (SETQ LINCNT 1)
00700 (FORMREADS)
00800 (INC NIL T)
00900 (OUTC NIL T)
01000 (RETURN NIL)))
01100
01200 (DEFPROP FORMFUNS
01300 (LAMBDA (NAMES)
01400 (PROG (DONE PROP NAME FLAG FLAGS LINCNT)
01500 (SETQ LINCNT 1)
01600 (LINEF 1)
01700 LOOP (COND ((NULL NAMES) (RETURN (REVERSE DONE))))
01800 (SETQ FLAGS (QUOTE (EXPR FEXPR VALUE MACRO)))
01900 (SETQ NAME (CAR NAMES))
02000 (SETQ NAMES (CDR NAMES))
02100 ILOOP(COND ((NULL FLAGS) (GO LOOP)))
02200 (SETQ FLAG (CAR FLAGS))
02300 (SETQ FLAGS (CDR FLAGS))
02400 (SETQ PROP (GETL NAME (LIST FLAG)))
02500 (COND ((NULL PROP) (GO ILOOP)))
02600 (SETQ DONE (CONS (CONS NAME FLAG) DONE))
02700 (SETQ PROP (CADR PROP))
02800 (COND ((NOT (ATLEFT)) (LINEF 1)))
02900 (FORMANEXPR (LIST (QUOTE DEFPROP) NAME PROP FLAG))
03000 (LINEF 1)
03100 (GO ILOOP)))
03200 FEXPR)
03300
03400 (DFUNC (FORMF) (PROG NIL (PRINC *FF) (SETQ LINCNT 1)))
03500
03600 (DFUNC (FORMANEXPR ANEXPR)
03700 (PROG (BUF)
03800 (COND ((OR (ATOM ANEXPR) (NOT (EQ (CAR ANEXPR) (Q LAP))))
03900 (SETQ BUF (BUFEXPR ANEXPR (LINELENGTH NIL) 0 0))
04000 (COND ((GREATERP (ADD1 (HEIGHT BUF))
04100 (*DIF PAGEHEIGHT (SUB1 LINCNT)))
04200 (COND ((NOT (EQ LINCNT 1)) (FORMF)))))
04300 (PRINTIT (STRING BUF) 0))
04400 (T (PRINTLAP (READLAP ANEXPR))))
04500 (COND ((NOT (ATLEFT)) (LINEF 2)))
04600 (RETURN NIL)))
04700
04800 (DFUNC (FORMREADS) (READLOOP (FUNCTION FORMANEXPR)))
04900
05000 (DFUNC (FULLWTH BUF RPARS)
05100 (MAX (WIDTH BUF) (PLUS (COLUMN BUF) RPARS)))
05200
00100 (DFUNC (LINEF NUM)
00200 (PROG NIL
00300 (COND ((LESSP NUM 0) (RETURN NIL)))
00400 (SETQ LINCNT (PLUS LINCNT NUM))
00500 LOOP (COND ((ZEROP NUM) (RETURN NIL)))
00600 (TERPRI)
00700 (SETQ NUM (SUB1 NUM))
00800 (GO LOOP)))
00900
01000 (DFUNC (MAX N M) (COND ((GREATERP N M) N) (T M)))
01100
01200 (DFUNC (MKAPP BUF1 BUF2)
01300 (SETCOL (SETHT (SETWTH (SETSTRING BUF1
01400 (NCONC (STRING (MKTAB BUF1 0))
01500 (STRING BUF2)))
01600 (MAX (WIDTH BUF1) (WIDTH BUF2)))
01700 (SUB1 (PLUS (HEIGHT BUF1) (HEIGHT BUF2))))
01800 (COLUMN BUF2)))
01900
02000 (DFUNC (MKATOM BUF ATOM) (MKEXPR (MKSPC (MKDOT (MKSPC BUF))) ATOM))
02100
02200 (DFUNC (MKCHAR BUF CHAR)
02300 (SETWTH (SETCOL (SETSTRING BUF
02400 (NCONC (STRING BUF)
02500 (LIST (LIST (Q CHAR) CHAR))))
02600 (ADD1 (COLUMN BUF)))
02700 (MAX (COLUMN BUF) (WIDTH BUF))))
02800
02900 (DFUNC (MKDOT BUF) (MKCHAR BUF *PT))
03000
03100 (DFUNC (MKEXPR BUF EXPR)
03200 (SETWTH (SETCOL (SETSTRING BUF
03300 (NCONC (STRING BUF)
03400 (LIST (LIST (Q EXPR) EXPR))))
03500 (PLUS (COLUMN BUF) (FLATSIZE EXPR)))
03600 (MAX (COLUMN BUF) (WIDTH BUF))))
03700
03800 (DFUNC (MKLIST BUF NUM LIST)
03900 (SETCOL
04000 (SETWTH (SETHT (SETSTRING BUF
04100 (NCONC (STRING BUF)
04200 (LIST (MCONS (Q LIST)
04300 NUM
04400 (STRING LIST)))))
04500 (COND ((LESSP NUM (COLUMN BUF))
04600 (PLUS (HEIGHT BUF) (HEIGHT LIST)))
04700 (T (SUB1 (PLUS (HEIGHT BUF) (HEIGHT LIST))))))
04800 (MAX (WIDTH BUF) (PLUS NUM (WIDTH LIST))))
04900 (PLUS NUM (COLUMN LIST))))
05000
05100 (DFUNC (MKLPR BUF) (MKCHAR BUF *LP))
05200
00100 (DFUNC (MKRPR BUF) (MKCHAR BUF *RP))
00200
00300 (DFUNC (MKSPC BUF) (MKCHAR BUF *SP))
00400
00500 (DFUNC (MKTAB BUF COL)
00600 (SETCOL (SETWTH (SETHT (SETSTRING BUF
00700 (NCONC (STRING BUF)
00800 (LIST (LIST (Q TAB) COL))))
00900 (COND ((LESSP COL (COLUMN BUF))
01000 (ADD1 (HEIGHT BUF)))
01100 (T (HEIGHT BUF))))
01200 (MAX (WIDTH BUF) COL))
01300 COL))
01400
01500 (DFUNC (PRINTIT LIST TAB)
01600 (PROG (COM)
01700 LOOP (COND ((NULL LIST) (RETURN NIL)))
01800 (SETQ COM (CAR LIST))
01900 (COND ((EQ (CAR COM) (Q TAB))
02000 (TABTO (ADD1 (PLUS TAB (CADR COM)))))
02100 ((EQ (CAR COM) (Q SPACE)) (PRINC *SP))
02200 ((EQ (CAR COM) (Q LPAR)) (PRINC *LP))
02300 ((EQ (CAR COM) (Q RPAR)) (PRINC *RP))
02400 ((EQ (CAR COM) (Q DOT)) (PRINC *PT))
02500 ((EQ (CAR COM) (Q CHAR)) (PRINC (CADR COM)))
02600 ((EQ (CAR COM) (Q EXPR)) (PRIN1 (CADR COM)))
02700 ((EQ (CAR COM) (Q LIST))
02800 (TABTO (ADD1 (PLUS TAB (CADR COM))))
02900 (PRINTIT (CDDR COM) (PLUS TAB (CADR COM)))))
03000 (SETQ LIST (CDR LIST))
03100 (GO LOOP)))
03200
03300 (DFUNC (PRINTLAP LISTING)
03400 (PROG (STAT)
03500 LOOP (COND ((NULL LISTING) (RETURN NIL)))
03600 (SETQ STAT (CAR LISTING))
03700 (SETQ LISTING (CDR LISTING))
03800 (PRINTSTAT STAT)
03900 (GO LOOP)))
04000
04100 (DFUNC (PRINTN CHAR NUM)
04200 (PROG (NO)
04300 (SETQ NO 1)
04400 LOOP (COND ((LESSP NUM NO) (RETURN NUM)))
04500 (PRINC CHAR)
04600 (SETQ NO (ADD1 NO))
04700 (GO LOOP)))
04800
00100 (DFUNC (PRINTSTAT STAT)
00200 (PROG2 (COND ((NULL STAT) (TABTO 1) (TABTO 10))
00300 ((ATOM STAT) (TABTO 2))
00400 ((EQ (CAR STAT) (Q LAP)) (TABTO 1))
00500 (T (TABTO 10)))
00600 (PRIN1 STAT)))
00700
00800 (DFUNC (READLAP CALL)
00900 (PROG (STAT CODE)
01000 (SETQ CODE (LIST CALL))
01100 READ (SETQ STAT (ERRSET (READ)))
01200 (COND ((NULL STAT) (DATAERR EOF-READLAP)))
01300 (COND ((EQ STAT (Q $EOF$)) (DATAERR EOF-READLAP)))
01400 (SETQ STAT (CAR STAT))
01500 (SETQ CODE (CONS STAT CODE))
01600 (COND ((NULL STAT) (RETURN (REVERSE CODE))))
01700 (GO READ)))
01800
01900 (DFUNC (READLOOP ACTFUNC)
02000 (PROG (EXPR)
02100 LOOP (SETQ EXPR (ERRSET (READ)))
02200 (COND ((EQ EXPR (Q $EOF$)) (RETURN NIL)))
02300 (ACTFUNC (CAR EXPR))
02400 (GO LOOP)))
02500
02600 (DFUNC (SETCOL BUF NUM) (PROG2 (RPLACA BUF NUM) BUF))
02700
02800 (DFUNC (SETHT BUF NUM) (PROG2 (RPLACA (CDR BUF) NUM) BUF))
02900
03000 (DFUNC (SETSTRING BUF STRING) (PROG2 (RPLACD (CDDR BUF) STRING) BUF))
03100
03200 (DFUNC (SETWTH BUF NUM) (PROG2 (RPLACA (CDDR BUF) NUM) BUF))
03300
03400 (DFUNC (TABTO COL)
03500 (PROG NIL
03600 (COND ((GREATERP (CURCOL) COL) (LINEF 1)))
03700 (PRINTN *TB
03800 (*DIF (LSH (SUB1 COL) -3) (LSH (SUB1 (CURCOL)) -3)))
03900 (PRINTN *SP (*DIF COL (CURCOL)))))
04000
04100 (SETQ PAGEHEIGHT 64)
04200
04300 (SETQ PAGEWIDTH 105)
04400
00100 (MAPCAR (FUNCTION (LAMBDA (PAIR)
00200 (PROG2 (SET (CAR PAIR)
00300 (INTERN (ASCII (CADR PAIR))))
00400 (CAR PAIR))))
00500 (QUOTE ((*SP 40) (*TB 11)
00600 (*CR 15)
00700 (*LF 12)
00800 (*VT 13)
00900 (*FF 14)
01000 (*CO 54)
01100 (*PT 56)
01200 (*LP 50)
01300 (*RP 51)
01400 (*SL 57)
01500 (*AM 33)
01600 (*AT 100)
01700 (*RO 177)
01800 (*COLON 72)
01900 (*LB 133)
02000 (*RB 135))))
02100
02200 (MAPDEF BUFFPRIN (EXCEPTBUFF DOEXCEPT) (SPECBUFF DOSPEC))
02300
02400 (MAPDEF SPECBUFF (COMMENT BUFSPECIAL) (DE BUFDEDFDM)
02500 (DEFPROP BUFDEFS) (DF BUFDEDFDM) (DFUNC BUFDEFS)
02600 (DM BUFDEDFDM) (GETSYM BUFMAPDEF) (LABEL BUFASSIGN)
02700 (LAMBDA BUFDEFS) (MAPDEF BUFMAPDEF) (PROG BUFPROG)
02800 (SETQ BUFASSIGN) (SPECIAL BUFSPECIAL))
02900